<script>
    let arr = [1, 2, 3, 8, 3, 4, 2, 7, 3, 2, 7, 3, 4, 7, 9, 2, 4, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]


    // 方法一
    let newArr = []
    for(let i = 0 ; i < arr.length ; i++){
        var flag = true
        for(let j = 0 ; j < newArr.length ; j ++){
            if (arr[i] == newArr[j]) {
                flag = false
                break
            }
        }
        if (flag) {
            newArr.push(arr[i])            
        }
    }
    console.log(newArr);

    
    // 方法二
    function fn(arr) {
        for (let i = 0; i < arr.length; i++) {
            for (j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(i, 1)
                    fn(arr)
                }
            }
        }
        return arr
    }
    console.log(fn(arr));


    // 方法三
    let newArr2 = []

    for(let i = 0 ; i< arr.length ; i++){
        if (arr.indexOf(arr[i],i+1) == -1 ){
            newArr2.push(arr[i])
        }
    }

    console.log(newArr2);

    // 方法四

    //Es6 Set 
    //1.new Set(传入数组)
    var norepeat = new Set(arr)
    //2.去重完毕 转换成数组 Array.from(set)
    console.log(norepeat); //对象
    // var n = Array.from(norepeat)
    // console.log(n);

    pps = [...norepeat]
    console.log(pps);


</script>


<!-- 重点：
1. 去重的方法有很多种，应该熟练的掌握数组的各种常用方法。
2. 方法一中的开关思想会经常运用到案列中，应当熟悉这种理念。
3. 方法四中的，通过构造函数实现生成的是对象，应当转换成数组。
4. 不应当局限于某一个方法，熟练的使用所有已经学过的知识。


拓展：
1. 将一个伪数组或者对象转换成数组的方式：
Array.from(norepeat)
该处因为是数组格式的对象，可以利用展开运算符转换成数组 -->